package com.lovo.test;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;

public class MyClass {
    public static int []arr =new int[4];//创建随机数组
    public static int []newArr =new int[4];//创建人为数组
    public static void main(String[] args) {
        for (int i = 4; i >= 0; i--) {//用户有四次机会，给定初始值i，让i自减
            random();//调用随机函数，获取四个不相同的0-9的随机数
            System.out.println(Arrays.toString(arr));//打印随机数组，看看程序是否正确
            input();//调用输入函数，让用户输入数字
            judge();//调用判断函数，判断满足a和b的值
            System.out.println("你还有"+i+"次机会");
            if (i==0){
                System.out.println("游戏结束，你失败了");
                break;
            }
        }
    }
    //判断
    public static void judge(){
        int a=0,b=0;//给定a和b的初始值
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {//用双循环的方式，让两个数组的每一个数相互比较
                if (newArr[j]==arr[i]&&j==i){
                    a++;//当值和下标都相同的时候a自增
                }else if (newArr[j]==arr[i]&&j!=i){
                    b++;//当值相同下标不相同的时候b自增
                }
            }
        }
        System.out.println("值相同，位置相同的数有"+a+"个，值相同，位置不相同的数有"+b+"个");
    }

    //用户输入
    public static void input(){
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入第"+(i+1)+"个数字");
            Scanner scan = new Scanner(System.in);
            try {//如果用户输入的不是int类型，可能会报错
                int number = scan.nextInt();
                if (number>-1&&number<=9){//判断用户输入的数是否在0-9之间
                    newArr[i]=number;//满足要求，将用户输入的值，赋值给数组
                    for (int j = 0; j < i; j++) {//通过循环的方式，判断用户输入的数是否重复
                        if (newArr[j]==number){//如果重复i自减，让用户重新输入
                            System.out.println("请不要输入重复的数字");
                            i--;
                        }
                    }
                }else {//不满足要求，i自减，提示用户重新输入0-9之间的数
                    i--;
                    System.out.println("请输入0-9之间的数");
                }
            }catch (Exception e){//如果用户输入的不是int类型，捕捉异常，提示输入错误，并且i自减，让用户重新输入
                System.out.println("输入错误");
                i--;
            }
        }
    }

    //随机数组
    public static void random(){
        for (int i = 0; i < arr.length; i++) {
            int arrValue=(int)(Math.random()*10+0);//获取随机数
            arr[i]=arrValue;//将随机数赋值给数组
            for (int j = 0; j < i; j++) {
                if (arr[j]==arrValue){//判断获取到的随机数是否和数组内已有的数重复
                    i--;//如果重复i自减，重新获取随机数，直到没有重复为止
                }
            }
        }

    }

}

